﻿#define _CRT_SECURE_NO_WARNINGS 1
#include "SeqList.h"
//初始化通讯录
void InitContact(contact* con)
{
	//通讯录的初始化实际上就是顺序表的初始胡
	//而顺序表的初始化已经实现好了,直接调用即可
	SLInit(con);
}
//销毁通讯录数据
void DestroyContact(contact* con)
{
	//通讯录的销毁实际上就是顺序表的销毁
	//而顺序表的销毁已经实现好了,直接调用
	SLDestroy(con);
}
//添加通讯录数据
void AddContact(contact* con)
{
	peoInfo info;
	//姓名 性别 年龄 电话 住址
	printf("请输入要添加的联系人的姓名\n");
	scanf("%s", info.name);
	printf("请输入要添加的联系人的性别\n");
	scanf("%s", info.gender);
	printf("请输入要添加的联系人的年龄\n");
	scanf("%d", &info.age);
	printf("请输入要添加的联系人的电话\n");
	scanf("%s", info.tel);
	printf("请输入要添加的联系人的住址\n");
	scanf("%s", info.addr);

	SLPushBack(con, info);
}
//字符串判断是否相等函数
int My_StrCmp(const char* str1, const char* str2)
{
	while (*str1++ == *str2++)
		if (*str1 == '\0')
			return 0;
	if (*str1 > *str2)
		return 1;
	else
		return -1;
}
//查找,下标返回函数
int findByName(contact* con, char* name)
{
	for (int i = 0; i < con->size; i++)
	{
		if (My_StrCmp(con->arr[i].name, name) == 0)
		{
			//找到了,返回下标
			return i;
		}
	}
	//没找到,返回无效下标,-1
	return -1;
}

//删除通讯录数据
void DelContact(contact* con)
{
	char name[NAME_MAX];
	//首先判断联系人存不存在
	//查找
	printf("请输入要删除的联系人的姓名\n");
	scanf("%s", name);
	int find = findByName(con, name);
	if (find < 0)
	{
		printf("要删除的联系人不存在!\n");
		return;
	}
	//要删除的联系人存在
	SLErase(con, find);
	printf("删除成功!\n");
}
//展⽰通讯录数据
void ShowContact(contact* con)
{
	//姓名 性别 年龄 电话 住址
	printf("姓名 性别 年龄 电话 住址\n");
	for (int i = 0; i < con->size; i++)
		printf("%s %s %d %s %s\n",
			con->arr[i].name,
			con->arr[i].gender,
			con->arr[i].age,
			con->arr[i].tel,
			con->arr[i].addr
			);
}
//修改通讯录数据
void ModifyContact(contact* con)
{
	char name[NAME_MAX];
	//要修改的联系人数据是否存在
	printf("请输入要修改的联系人的姓名\n");
	scanf("%s", name);
	int find = findByName(con, name);
	if (find < 0)
	{
		printf("要修改的联系人不存在!\n");
		return;
	}
	//要修改的联系人存在
	//直接修改
	printf("请输入新的联系人的姓名\n");
	scanf("%s", con->arr[find].name);
	printf("请输入新的联系人的性别\n");
	scanf("%s", con->arr[find].gender);
	printf("请输入新的联系人的年龄\n");
	scanf("%d", &con->arr[find].age);
	printf("请输入新的联系人的电话\n");
	scanf("%s", con->arr[find].tel);
	printf("请输入新的联系人的住址\n");
	scanf("%s", con->arr[find].addr);
	printf("修改成功\n");
}
//查找通讯录数据
void FindContact(contact* con)
{
	char name[NAME_MAX];
	//要查找的联系人数据是否存在
	printf("请输入要查找的联系人的姓名\n");
	scanf("%s", name);
	int find = findByName(con, name);
	if (find < 0)
	{
		printf("要查找的联系人不存在!\n");
		return;
	}
	//要查找的联系人存在
	//显示
	printf("姓名 性别 年龄 电话 住址\n");
	printf("%s %s %d %s %s\n",
		con->arr[find].name,
		con->arr[find].gender,
		con->arr[find].age,
		con->arr[find].tel,
		con->arr[find].addr
	);
}